[レポート] Build an end-to-end DevSecOps pipeline on AWS  #GRC351-R #AWSreInforce

[レポート] Build an end-to-end DevSecOps pipeline on AWS #GRC351-R #AWSreInforce

Clock Icon2023.06.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。

アナハイムで開催されている AWS re:Inforce 2023 に参加しています。

本記事は AWS re:Inforce 2023 のセッション「Build an end-to-end DevSecOps pipeline on AWS」のセッションレポートです。

セッション概要

Organizations want to deliver applications that meet a high bar for security and governance considerations. In this builders’ session, build a DevSecOps CI/CD pipeline with security and compliance testing integrated into the development process. Find out how you can create a CI/CD pipeline that delivers tested and secure infrastructure as code using a git branching strategy for your AWS accounts. Using Amazon CodeCatalyst, integrate CFN-Guard to run policy validations and ensure pipeline deployments are consistent and meet your organization’s compliance standards.

構成図

構成図は以下の通りです。

テキストの構成図を引用

仕組みとしては以下のとおりです。

  1. cfn-guard と 監査リソースのプロジェクトで、2つ存在している
  2. どちらも Git で管理されており、コミットをトリガーに CI/CD ワークフローが実行される
  3. Lambda に関しては、 cfn-guard で定義されたルールに準拠しているかデプロイ前にチェックされる
  4. cfn-guard のルールに準拠していれば、 Lambda 関数がデプロイされる

やってみた

再現はできないのですが、どんな手順でやったかの参考になれば幸いです。

では、さっそくやってみましょう!

cfn-guard プロジェクトの作成

CodeCatalyst プロジェクトとは、開発チーム単位ごとに作成する共同の作業場所を指します。cfn-guard ルール を保管する CodeCatalyst プロジェクト (レジストリ) を作成します。

リポジトリの作成

cfn-guard ルールを Git 管理するため、先ほど作成したプロジェクト内で、リポジトリを作成していきます。

作ってて気がついたのですが、 Description が日本語対応していました。

リポジトリのブーストラップ

作成したリポジトリにソースコードをコミットします。

rules には、 Python のランタイムチェックと、タグ付けがされているかのチェックが配置されています。

Environment の作成

Environment はコードのデプロイ操作をコントロールを行う機能です。 Platform-Engineering の名前と、デプロイ先の AWS アカウントを紐づけて作成しました。

Workflow の作成

Workflow で Guard のルールを構築, テストし S3 バケットに配信します。

監査リソースのプロジェクトの作成

cfn-guard でチェックされるリソース (プロジェクト) を作成します。

今回は Serverless application model (SAM) API のブループリントからプロジェクトの作成をしました。

ブループリント用意されているの大変便利ですね。

ワークフローの編集

cfn-guard を Lambda デプロイ前にチェックするため、Lambda プロジェクトのワークフローを編集しました。

ビルドと並行して実施されてるような仕組みに変更しました。

リソースの修正

Lambda のランタイムチェックにはクリアしていましたが、タグ付けができていなかったため、パイプラインがコケていました。

テストにクリアするために Lambda のタグ付けを変更します。

コミットすると ワークフローが自動実行され、数分後テストに合格していました!

まとめ

以上、Build an end-to-end DevSecOps pipeline on AWS のセッションレポートでした。

ワークフロー、Environment など CodeCatalyst 特有の要素を利用して、 DevSecOps パイプラインを実装するのが初めてだったため、とても勉強になりました。

この記事がどなたかの参考になれば幸いです。

以上、 AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.